define([
  'exports',
  './Matrix2-f2da41d4',
  './RuntimeError-ffe03243',
  './when-229515d6',
  './Transforms-7cd3197b',
], function (e, n, i, t, a) {
  'use strict';
  function m(e, i, a) {
    (this.minimum = n.Cartesian3.clone(t.defaultValue(e, n.Cartesian3.ZERO))),
      (this.maximum = n.Cartesian3.clone(t.defaultValue(i, n.Cartesian3.ZERO))),
      (a = t.defined(a)
        ? n.Cartesian3.clone(a)
        : n.Cartesian3.midpoint(this.minimum, this.maximum, new n.Cartesian3())),
      (this.center = a);
  }
  (m.fromPoints = function (e, i) {
    if ((t.defined(i) || (i = new m()), !t.defined(e) || 0 === e.length))
      return (
        (i.minimum = n.Cartesian3.clone(n.Cartesian3.ZERO, i.minimum)),
        (i.maximum = n.Cartesian3.clone(n.Cartesian3.ZERO, i.maximum)),
        (i.center = n.Cartesian3.clone(n.Cartesian3.ZERO, i.center)),
        i
      );
    for (
      var a = e[0].x,
        r = e[0].y,
        s = e[0].z,
        u = e[0].x,
        c = e[0].y,
        o = e[0].z,
        l = e.length,
        d = 1;
      d < l;
      d++
    ) {
      var f = e[d],
        x = f.x,
        C = f.y,
        h = f.z;
      (a = Math.min(x, a)),
        (u = Math.max(x, u)),
        (r = Math.min(C, r)),
        (c = Math.max(C, c)),
        (s = Math.min(h, s)),
        (o = Math.max(h, o));
    }
    var y = i.minimum;
    (y.x = a), (y.y = r), (y.z = s);
    var p = i.maximum;
    return (p.x = u), (p.y = c), (p.z = o), (i.center = n.Cartesian3.midpoint(y, p, i.center)), i;
  }),
    (m.clone = function (e, i) {
      if (t.defined(e))
        return t.defined(i)
          ? ((i.minimum = n.Cartesian3.clone(e.minimum, i.minimum)),
            (i.maximum = n.Cartesian3.clone(e.maximum, i.maximum)),
            (i.center = n.Cartesian3.clone(e.center, i.center)),
            i)
          : new m(e.minimum, e.maximum, e.center);
    }),
    (m.equals = function (e, i) {
      return (
        e === i ||
        (t.defined(e) &&
          t.defined(i) &&
          n.Cartesian3.equals(e.center, i.center) &&
          n.Cartesian3.equals(e.minimum, i.minimum) &&
          n.Cartesian3.equals(e.maximum, i.maximum))
      );
    });
  var r = new n.Cartesian3();
  (m.intersectPlane = function (e, i) {
    r = n.Cartesian3.subtract(e.maximum, e.minimum, r);
    var t = n.Cartesian3.multiplyByScalar(r, 0.5, r),
      m = i.normal,
      s = t.x * Math.abs(m.x) + t.y * Math.abs(m.y) + t.z * Math.abs(m.z),
      u = n.Cartesian3.dot(e.center, m) + i.distance;
    return u - s > 0
      ? a.Intersect.INSIDE
      : u + s < 0
      ? a.Intersect.OUTSIDE
      : a.Intersect.INTERSECTING;
  }),
    (m.prototype.clone = function (e) {
      return m.clone(this, e);
    }),
    (m.prototype.intersectPlane = function (e) {
      return m.intersectPlane(this, e);
    }),
    (m.prototype.equals = function (e) {
      return m.equals(this, e);
    }),
    (e.AxisAlignedBoundingBox = m);
});
